package com.mlh.springboot;

import com.mlh.springboot.bean.Cat;
import com.mlh.springboot.bean.Monster;
import com.mlh.springboot.config.BeanConfig;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
 * @author 缪林辉
 * @date 2024/2/27 22:45
 * @DESCRIPTION
 */
//@SpringBootApplication:表示这是一个springboot应用/项目
//scanBasePackages =”com.mlh"指定springboot 要扫描的包和子包
@SpringBootApplication(scanBasePackages = "com.mlh")
//要求扫描com.mlh.springboot 包/子包下的原生方式注入的Servlet
//此时原生的servlet才会注入到容器中
@ServletComponentScan("com.mlh.springboot")
public class MainApp {
    public static void main(String[] args) {
        //启动springboot应用程序/项目
        ConfigurableApplicationContext ioc = SpringApplication.run(MainApp.class, args);

        //查看容器里面的组件
        // String[] beanDefinitionNames = ioc.getBeanDefinitionNames();
        // for (String beanDefinitionName : beanDefinitionNames) {
        //     System.out.println(beanDefinitionName);
        // }

        // //--演示在springboot项目，依然可以使用spring的配置bean/注入bean/获取bean方式
        // ApplicationContext ioc = new ClassPathXmlApplicationContext("beans.xml");
        // //根据beanName获取Bean后,判断该Bean是否属于Monster类型
        // Monster monster03 = ioc.getBean("monster03", Monster.class);
        // System.out.println(monster03);

        //通过配置类 配置bean
        // Monster monster01 = ioc.getBean("monster01", Monster.class);
        // System.out.println(monster01);

        // //通过这种方式获取Monster,(proxyBeanMethods = true)才能生效
        // BeanConfig beanConfig = ioc.getBean(BeanConfig.class);
        // Monster monster01 = beanConfig.monster01();
        // //通过ioc.getBean直接获取的，(proxyBeanMethods = true)是无法生效的
        // Monster monster02 = ioc.getBean("monster01", Monster.class);

        // //测试@ImportResource("classpath:beans.xml") 是否成功注入bean
        // Monster monster03 = ioc.getBean("monster03", Monster.class);
        // System.out.println(monster03);
    }
}
